﻿// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

namespace Chromely;

public static partial class Interop
{
    public static partial class User32
    {
        public enum Keys
        {
            /// <summary>
            ///  The bit mask to extract a key code from a key value.
            /// </summary>
            KeyCode = 0x0000FFFF,

            /// <summary>
            ///  The bit mask to extract modifiers from a key value.
            /// </summary>
            Modifiers = unchecked((int)0xFFFF0000),

            /// <summary>
            ///  No key pressed.
            /// </summary>
            None = 0x00,

            /// <summary>
            ///  The left mouse button.
            /// </summary>
            LButton = 0x01,

            /// <summary>
            ///  The right mouse button.
            /// </summary>
            RButton = 0x02,

            /// <summary>
            ///  The CANCEL key.
            /// </summary>
            Cancel = 0x03,

            /// <summary>
            ///  The middle mouse button (three-button mouse).
            /// </summary>
            MButton = 0x04,

            /// <summary>
            ///  The first x mouse button (five-button mouse).
            /// </summary>
            XButton1 = 0x05,

            /// <summary>
            ///  The second x mouse button (five-button mouse).
            /// </summary>
            XButton2 = 0x06,

            /// <summary>
            ///  The BACKSPACE key.
            /// </summary>
            Back = 0x08,

            /// <summary>
            ///  The TAB key.
            /// </summary>
            Tab = 0x09,

            /// <summary>
            ///  The CLEAR key.
            /// </summary>
            LineFeed = 0x0A,

            /// <summary>
            ///  The CLEAR key.
            /// </summary>
            Clear = 0x0C,

            /// <summary>
            ///  The RETURN key.
            /// </summary>
            Return = 0x0D,

            /// <summary>
            ///  The ENTER key.
            /// </summary>
            Enter = Return,

            /// <summary>
            ///  The SHIFT key.
            /// </summary>
            ShiftKey = 0x10,

            /// <summary>
            ///  The CTRL key.
            /// </summary>
            ControlKey = 0x11,

            /// <summary>
            ///  The ALT key.
            /// </summary>
            Menu = 0x12,

            /// <summary>
            ///  The PAUSE key.
            /// </summary>
            Pause = 0x13,

            /// <summary>
            ///  The CAPS LOCK key.
            /// </summary>
            Capital = 0x14,

            /// <summary>
            ///  The CAPS LOCK key.
            /// </summary>
            CapsLock = 0x14,

            /// <summary>
            ///  The IME Kana mode key.
            /// </summary>
            KanaMode = 0x15,

            /// <summary>
            ///  The IME Hanguel mode key.
            /// </summary>
            HanguelMode = 0x15,

            /// <summary>
            ///  The IME Hangul mode key.
            /// </summary>
            HangulMode = 0x15,

            /// <summary>
            ///  The IME Junja mode key.
            /// </summary>
            JunjaMode = 0x17,

            /// <summary>
            ///  The IME Final mode key.
            /// </summary>
            FinalMode = 0x18,

            /// <summary>
            ///  The IME Hanja mode key.
            /// </summary>
            HanjaMode = 0x19,

            /// <summary>
            ///  The IME Kanji mode key.
            /// </summary>
            KanjiMode = 0x19,

            /// <summary>
            ///  The ESC key.
            /// </summary>
            Escape = 0x1B,

            /// <summary>
            ///  The IME Convert key.
            /// </summary>
            IMEConvert = 0x1C,

            /// <summary>
            ///  The IME NonConvert key.
            /// </summary>
            IMENonconvert = 0x1D,

            /// <summary>
            ///  The IME Accept key.
            /// </summary>
            IMEAccept = 0x1E,

            /// <summary>
            ///  The IME Accept key.
            /// </summary>
            IMEAceept = IMEAccept,

            /// <summary>
            ///  The IME Mode change request.
            /// </summary>
            IMEModeChange = 0x1F,

            /// <summary>
            ///  The SPACEBAR key.
            /// </summary>
            Space = 0x20,

            /// <summary>
            ///  The PAGE UP key.
            /// </summary>
            Prior = 0x21,

            /// <summary>
            ///  The PAGE UP key.
            /// </summary>
            PageUp = Prior,

            /// <summary>
            ///  The PAGE DOWN key.
            /// </summary>
            Next = 0x22,

            /// <summary>
            ///  The PAGE DOWN key.
            /// </summary>
            PageDown = Next,

            /// <summary>
            ///  The END key.
            /// </summary>
            End = 0x23,

            /// <summary>
            ///  The HOME key.
            /// </summary>
            Home = 0x24,

            /// <summary>
            ///  The LEFT ARROW key.
            /// </summary>
            Left = 0x25,

            /// <summary>
            ///  The UP ARROW key.
            /// </summary>
            Up = 0x26,

            /// <summary>
            ///  The RIGHT ARROW key.
            /// </summary>
            Right = 0x27,

            /// <summary>
            ///  The DOWN ARROW key.
            /// </summary>
            Down = 0x28,

            /// <summary>
            ///  The SELECT key.
            /// </summary>
            Select = 0x29,

            /// <summary>
            ///  The PRINT key.
            /// </summary>
            Print = 0x2A,

            /// <summary>
            ///  The EXECUTE key.
            /// </summary>
            Execute = 0x2B,

            /// <summary>
            ///  The PRINT SCREEN key.
            /// </summary>
            Snapshot = 0x2C,

            /// <summary>
            ///  The PRINT SCREEN key.
            /// </summary>
            PrintScreen = Snapshot,

            /// <summary>
            ///  The INS key.
            /// </summary>
            Insert = 0x2D,

            /// <summary>
            ///  The DEL key.
            /// </summary>
            Delete = 0x2E,

            /// <summary>
            ///  The HELP key.
            /// </summary>
            Help = 0x2F,

            /// <summary>
            ///  The 0 key.
            /// </summary>
            D0 = 0x30, // 0

            /// <summary>
            ///  The 1 key.
            /// </summary>
            D1 = 0x31, // 1

            /// <summary>
            ///  The 2 key.
            /// </summary>
            D2 = 0x32, // 2

            /// <summary>
            ///  The 3 key.
            /// </summary>
            D3 = 0x33, // 3

            /// <summary>
            ///  The 4 key.
            /// </summary>
            D4 = 0x34, // 4

            /// <summary>
            ///  The 5 key.
            /// </summary>
            D5 = 0x35, // 5

            /// <summary>
            ///  The 6 key.
            /// </summary>
            D6 = 0x36, // 6

            /// <summary>
            ///  The 7 key.
            /// </summary>
            D7 = 0x37, // 7

            /// <summary>
            ///  The 8 key.
            /// </summary>
            D8 = 0x38, // 8

            /// <summary>
            ///  The 9 key.
            /// </summary>
            D9 = 0x39, // 9

            /// <summary>
            ///  The A key.
            /// </summary>
            A = 0x41,

            /// <summary>
            ///  The B key.
            /// </summary>
            B = 0x42,

            /// <summary>
            ///  The C key.
            /// </summary>
            C = 0x43,

            /// <summary>
            ///  The D key.
            /// </summary>
            D = 0x44,

            /// <summary>
            ///  The E key.
            /// </summary>
            E = 0x45,

            /// <summary>
            ///  The F key.
            /// </summary>
            F = 0x46,

            /// <summary>
            ///  The G key.
            /// </summary>
            G = 0x47,

            /// <summary>
            ///  The H key.
            /// </summary>
            H = 0x48,

            /// <summary>
            ///  The I key.
            /// </summary>
            I = 0x49,

            /// <summary>
            ///  The J key.
            /// </summary>
            J = 0x4A,

            /// <summary>
            ///  The K key.
            /// </summary>
            K = 0x4B,

            /// <summary>
            ///  The L key.
            /// </summary>
            L = 0x4C,

            /// <summary>
            ///  The M key.
            /// </summary>
            M = 0x4D,

            /// <summary>
            ///  The N key.
            /// </summary>
            N = 0x4E,

            /// <summary>
            ///  The O key.
            /// </summary>
            O = 0x4F,

            /// <summary>
            ///  The P key.
            /// </summary>
            P = 0x50,

            /// <summary>
            ///  The Q key.
            /// </summary>
            Q = 0x51,

            /// <summary>
            ///  The R key.
            /// </summary>
            R = 0x52,

            /// <summary>
            ///  The S key.
            /// </summary>
            S = 0x53,

            /// <summary>
            ///  The T key.
            /// </summary>
            T = 0x54,

            /// <summary>
            ///  The U key.
            /// </summary>
            U = 0x55,

            /// <summary>
            ///  The V key.
            /// </summary>
            V = 0x56,

            /// <summary>
            ///  The W key.
            /// </summary>
            W = 0x57,

            /// <summary>
            ///  The X key.
            /// </summary>
            X = 0x58,

            /// <summary>
            ///  The Y key.
            /// </summary>
            Y = 0x59,

            /// <summary>
            ///  The Z key.
            /// </summary>
            Z = 0x5A,

            /// <summary>
            ///  The left Windows logo key (Microsoft Natural Keyboard).
            /// </summary>
            LWin = 0x5B,

            /// <summary>
            ///  The right Windows logo key (Microsoft Natural Keyboard).
            /// </summary>
            RWin = 0x5C,

            /// <summary>
            ///  The Application key (Microsoft Natural Keyboard).
            /// </summary>
            Apps = 0x5D,

            /// <summary>
            ///  The Computer Sleep key.
            /// </summary>
            Sleep = 0x5F,

            /// <summary>
            ///  The 0 key on the numeric keypad.
            /// </summary>
            NumPad0 = 0x60,

            /// <summary>
            ///  The 1 key on the numeric keypad.
            /// </summary>
            NumPad1 = 0x61,

            /// <summary>
            ///  The 2 key on the numeric keypad.
            /// </summary>
            NumPad2 = 0x62,

            /// <summary>
            ///  The 3 key on the numeric keypad.
            /// </summary>
            NumPad3 = 0x63,

            /// <summary>
            ///  The 4 key on the numeric keypad.
            /// </summary>
            NumPad4 = 0x64,

            /// <summary>
            ///  The 5 key on the numeric keypad.
            /// </summary>
            NumPad5 = 0x65,

            /// <summary>
            ///  The 6 key on the numeric keypad.
            /// </summary>
            NumPad6 = 0x66,

            /// <summary>
            ///  The 7 key on the numeric keypad.
            /// </summary>
            NumPad7 = 0x67,

            /// <summary>
            ///  The 8 key on the numeric keypad.
            /// </summary>
            NumPad8 = 0x68,

            /// <summary>
            ///  The 9 key on the numeric keypad.
            /// </summary>
            NumPad9 = 0x69,

            /// <summary>
            ///  The Multiply key.
            /// </summary>
            Multiply = 0x6A,

            /// <summary>
            ///  The Add key.
            /// </summary>
            Add = 0x6B,

            /// <summary>
            ///  The Separator key.
            /// </summary>
            Separator = 0x6C,

            /// <summary>
            ///  The Subtract key.
            /// </summary>
            Subtract = 0x6D,

            /// <summary>
            ///  The Decimal key.
            /// </summary>
            Decimal = 0x6E,

            /// <summary>
            ///  The Divide key.
            /// </summary>
            Divide = 0x6F,

            /// <summary>
            ///  The F1 key.
            /// </summary>
            F1 = 0x70,

            /// <summary>
            ///  The F2 key.
            /// </summary>
            F2 = 0x71,

            /// <summary>
            ///  The F3 key.
            /// </summary>
            F3 = 0x72,

            /// <summary>
            ///  The F4 key.
            /// </summary>
            F4 = 0x73,

            /// <summary>
            ///  The F5 key.
            /// </summary>
            F5 = 0x74,

            /// <summary>
            ///  The F6 key.
            /// </summary>
            F6 = 0x75,

            /// <summary>
            ///  The F7 key.
            /// </summary>
            F7 = 0x76,

            /// <summary>
            ///  The F8 key.
            /// </summary>
            F8 = 0x77,

            /// <summary>
            ///  The F9 key.
            /// </summary>
            F9 = 0x78,

            /// <summary>
            ///  The F10 key.
            /// </summary>
            F10 = 0x79,

            /// <summary>
            ///  The F11 key.
            /// </summary>
            F11 = 0x7A,

            /// <summary>
            ///  The F12 key.
            /// </summary>
            F12 = 0x7B,

            /// <summary>
            ///  The F13 key.
            /// </summary>
            F13 = 0x7C,

            /// <summary>
            ///  The F14 key.
            /// </summary>
            F14 = 0x7D,

            /// <summary>
            ///  The F15 key.
            /// </summary>
            F15 = 0x7E,

            /// <summary>
            ///  The F16 key.
            /// </summary>
            F16 = 0x7F,

            /// <summary>
            ///  The F17 key.
            /// </summary>
            F17 = 0x80,

            /// <summary>
            ///  The F18 key.
            /// </summary>
            F18 = 0x81,

            /// <summary>
            ///  The F19 key.
            /// </summary>
            F19 = 0x82,

            /// <summary>
            ///  The F20 key.
            /// </summary>
            F20 = 0x83,

            /// <summary>
            ///  The F21 key.
            /// </summary>
            F21 = 0x84,

            /// <summary>
            ///  The F22 key.
            /// </summary>
            F22 = 0x85,

            /// <summary>
            ///  The F23 key.
            /// </summary>
            F23 = 0x86,

            /// <summary>
            ///  The F24 key.
            /// </summary>
            F24 = 0x87,

            /// <summary>
            ///  The NUM LOCK key.
            /// </summary>
            NumLock = 0x90,

            /// <summary>
            ///  The SCROLL LOCK key.
            /// </summary>
            Scroll = 0x91,

            /// <summary>
            ///  The left SHIFT key.
            /// </summary>
            LShiftKey = 0xA0,

            /// <summary>
            ///  The right SHIFT key.
            /// </summary>
            RShiftKey = 0xA1,

            /// <summary>
            ///  The left CTRL key.
            /// </summary>
            LControlKey = 0xA2,

            /// <summary>
            ///  The right CTRL key.
            /// </summary>
            RControlKey = 0xA3,

            /// <summary>
            ///  The left ALT key.
            /// </summary>
            LMenu = 0xA4,

            /// <summary>
            ///  The right ALT key.
            /// </summary>
            RMenu = 0xA5,

            /// <summary>
            ///  The Browser Back key.
            /// </summary>
            BrowserBack = 0xA6,

            /// <summary>
            ///  The Browser Forward key.
            /// </summary>
            BrowserForward = 0xA7,

            /// <summary>
            ///  The Browser Refresh key.
            /// </summary>
            BrowserRefresh = 0xA8,

            /// <summary>
            ///  The Browser Stop key.
            /// </summary>
            BrowserStop = 0xA9,

            /// <summary>
            ///  The Browser Search key.
            /// </summary>
            BrowserSearch = 0xAA,

            /// <summary>
            ///  The Browser Favorites key.
            /// </summary>
            BrowserFavorites = 0xAB,

            /// <summary>
            ///  The Browser Home key.
            /// </summary>
            BrowserHome = 0xAC,

            /// <summary>
            ///  The Volume Mute key.
            /// </summary>
            VolumeMute = 0xAD,

            /// <summary>
            ///  The Volume Down key.
            /// </summary>
            VolumeDown = 0xAE,

            /// <summary>
            ///  The Volume Up key.
            /// </summary>
            VolumeUp = 0xAF,

            /// <summary>
            ///  The Media Next Track key.
            /// </summary>
            MediaNextTrack = 0xB0,

            /// <summary>
            ///  The Media Previous Track key.
            /// </summary>
            MediaPreviousTrack = 0xB1,

            /// <summary>
            ///  The Media Stop key.
            /// </summary>
            MediaStop = 0xB2,

            /// <summary>
            ///  The Media Play Pause key.
            /// </summary>
            MediaPlayPause = 0xB3,

            /// <summary>
            ///  The Launch Mail key.
            /// </summary>
            LaunchMail = 0xB4,

            /// <summary>
            ///  The Select Media key.
            /// </summary>
            SelectMedia = 0xB5,

            /// <summary>
            ///  The Launch Application1 key.
            /// </summary>
            LaunchApplication1 = 0xB6,

            /// <summary>
            ///  The Launch Application2 key.
            /// </summary>
            LaunchApplication2 = 0xB7,

            /// <summary>
            ///  The Oem Semicolon key.
            /// </summary>
            OemSemicolon = 0xBA,

            /// <summary>
            ///  The Oem 1 key.
            /// </summary>
            Oem1 = OemSemicolon,

            /// <summary>
            ///  The Oem plus key.
            /// </summary>
            Oemplus = 0xBB,

            /// <summary>
            ///  The Oem comma key.
            /// </summary>
            Oemcomma = 0xBC,

            /// <summary>
            ///  The Oem Minus key.
            /// </summary>
            OemMinus = 0xBD,

            /// <summary>
            ///  The Oem Period key.
            /// </summary>
            OemPeriod = 0xBE,

            /// <summary>
            ///  The Oem Question key.
            /// </summary>
            OemQuestion = 0xBF,

            /// <summary>
            ///  The Oem 2 key.
            /// </summary>
            Oem2 = OemQuestion,

            /// <summary>
            ///  The Oem tilde key.
            /// </summary>
            Oemtilde = 0xC0,

            /// <summary>
            ///  The Oem 3 key.
            /// </summary>
            Oem3 = Oemtilde,

            /// <summary>
            ///  The Oem Open Brackets key.
            /// </summary>
            OemOpenBrackets = 0xDB,

            /// <summary>
            ///  The Oem 4 key.
            /// </summary>
            Oem4 = OemOpenBrackets,

            /// <summary>
            ///  The Oem Pipe key.
            /// </summary>
            OemPipe = 0xDC,

            /// <summary>
            ///  The Oem 5 key.
            /// </summary>
            Oem5 = OemPipe,

            /// <summary>
            ///  The Oem Close Brackets key.
            /// </summary>
            OemCloseBrackets = 0xDD,

            /// <summary>
            ///  The Oem 6 key.
            /// </summary>
            Oem6 = OemCloseBrackets,

            /// <summary>
            ///  The Oem Quotes key.
            /// </summary>
            OemQuotes = 0xDE,

            /// <summary>
            ///  The Oem 7 key.
            /// </summary>
            Oem7 = OemQuotes,

            /// <summary>
            ///  The Oem8 key.
            /// </summary>
            Oem8 = 0xDF,

            /// <summary>
            ///  The Oem Backslash key.
            /// </summary>
            OemBackslash = 0xE2,

            /// <summary>
            ///  The Oem 102 key.
            /// </summary>
            Oem102 = OemBackslash,

            /// <summary>
            ///  The PROCESS KEY key.
            /// </summary>
            ProcessKey = 0xE5,

            /// <summary>
            ///  The Packet KEY key.
            /// </summary>
            Packet = 0xE7,

            /// <summary>
            ///  The ATTN key.
            /// </summary>
            Attn = 0xF6,

            /// <summary>
            ///  The CRSEL key.
            /// </summary>
            Crsel = 0xF7,

            /// <summary>
            ///  The EXSEL key.
            /// </summary>
            Exsel = 0xF8,

            /// <summary>
            ///  The ERASE EOF key.
            /// </summary>
            EraseEof = 0xF9,

            /// <summary>
            ///  The PLAY key.
            /// </summary>
            Play = 0xFA,

            /// <summary>
            ///  The ZOOM key.
            /// </summary>
            Zoom = 0xFB,

            /// <summary>
            ///  A constant reserved for future use.
            /// </summary>
            NoName = 0xFC,

            /// <summary>
            ///  The PA1 key.
            /// </summary>
            Pa1 = 0xFD,

            /// <summary>
            ///  The CLEAR key.
            /// </summary>
            OemClear = 0xFE,

            /// <summary>
            ///  The SHIFT modifier key.
            /// </summary>
            Shift = 0x00010000,

            /// <summary>
            ///  The  CTRL modifier key.
            /// </summary>
            Control = 0x00020000,

            /// <summary>
            ///  The ALT modifier key.
            /// </summary>
            Alt = 0x00040000,
        }
    }
}